package it.uniroma2.art.coda.structures;

import it.uniroma2.art.coda.pearl.model.ProjectionRule;

import java.util.ArrayList;
import java.util.List;

import org.apache.uima.jcas.tcas.Annotation;

/**
 * @author Andrea Turbati
 */

public class SuggOntologyCoda {

	Annotation ann;
	List<ARTTriple> suggestedARTTtripleList;
	List<ProjectionRule> projectionRuleList;
	// the structure created by the projection disambiguation containing the selected projection rules
	//SelectedProjectionRules selProjRules;
	// all the structure returned by CODACore (merging the other structure and adding the missing information)
	//CodaFinalSuggestions codaFinalSuggs;

	
	public SuggOntologyCoda(Annotation ann){
		this.ann = ann;
		suggestedARTTtripleList = new ArrayList<ARTTriple>();
		projectionRuleList = new ArrayList<ProjectionRule>();
		
	}
	
	
	public void addProjectionRule(ProjectionRule pr){
		projectionRuleList.add(pr);
	}
	
	public void addSuggestedTriple(ARTTriple artTriple){
		suggestedARTTtripleList.add(artTriple);
	}
	
	public void addSuggestedTripleList(List<ARTTriple> artTripleList){
		suggestedARTTtripleList.addAll(artTripleList);
	}
	
	public List<ProjectionRule> getProjectionRulesList(){
		return projectionRuleList;
	}
	
	public List<ARTTriple> getARTTripleList(){
		return suggestedARTTtripleList;
	}
	
	/**
	 * @param selProjRules
	 *            the selected projection rules
	 * @param bindLabels
	 *            the suggestions from the Identity Resolution Component
	 * @param resSmartSuggsStruct
	 *            the suggestions form the Smart Suggestion Component
	 * @param codaFinalSuggs
	 *            the final suggestions from CODA
	 * @param ann
	 *            the annotation that triggered all these suggestions
	 */
	//public SuggOntologyCoda(SelectedProjectionRules selProjRules,
	//		CodaFinalSuggestions codaFinalSuggs, Annotation ann) {
	//	this.ann = ann;
	//	this.selProjRules = selProjRules;
	//	this.codaFinalSuggs = codaFinalSuggs;
	//}

	/**
	 * Get the selected projection rules
	 * 
	 * @return the selected projection rules
	 */
	//public SelectedProjectionRules getSelProjRules() {
	//	return selProjRules;
	//}

	/**
	 * Get the final CODA suggestions
	 * 
	 * @return the final CODA suggestions
	 */
	//public CodaFinalSuggestions getCodaFinalSuggs() {
	//	return codaFinalSuggs;
	//}

	/**
	 * Get the annotation to which all this suggestions belongs to
	 * 
	 * @return the annotation to which all this suggestions belongs to
	 */
	public Annotation getAnnotation() {
		return ann;
	}
}
